Moduł:Karta
local getArgs = require('Dev:Arguments').getArgs local u = require('Module:Utils') local data = mw.loadData('Module:Karty') local keywords = mw.loadData('Module:Definicje') local p = {} function p.infobox(frame) return p._infobox(getArgs(frame)) end function p._infobox(args) local title = args1 or mw.title.getCurrentTitle().text local i_title = u.trim(string.match(title, '^^(+')) local p_title = title:gsub('%(^%)+%)', '%0') local card = datatitle if not card then return 'Karta '..title..' nie jest dostępna w obecnej wersji gry.' end local image = p._encode(title..'.png') local art = p._encode(title..'_Art.jpg') local premium = p._encode(title..'_Premium.gif') local faction_img = ' ' if card.frakcja2 then faction_img = faction_img..' ' end local infobox = mw.html.create('infobox'):attr('type', 'card') local image_panel = mw.html.create('panel') if card.kolor 'Umiejętność' then image_panel :tag('section') :tag('label'):wikitext('Obraz'):done() :tag('image') :tag('default'):wikitext(image) :done() :done() :done() :done() :tag('section') :tag('label'):wikitext('Dodaj'):done() :tag('group'):attr('name', 'upload') :node(p._data(p._t(mw.title.new('File:'..image).fileExists, nil, 'wpDestFile='..image..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz karty'))) :done() :done() else image_panel :tag('section') :tag('label'):wikitext('Karta'):done() :tag('image') :tag('default'):wikitext(image):done() :done() :done() :tag('section') :tag('label'):wikitext('Obraz'):done() :tag('image'):attr('name', 'art') :tag('default'):wikitext(art):done() :done() :done() :tag('section') :tag('label'):wikitext('Premium'):done() :tag('image'):attr('name', 'premium') :tag('default'):wikitext(premium):done() :done() :done() :tag('section') :tag('label'):wikitext('Dodaj'):done() :tag('group'):attr('name', 'upload') :node(p._data(p._t(mw.title.new('File:'..image).fileExists, nil, 'wpDestFile='..image..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz karty'))) :node(p._data(p._t(mw.title.new('File:'..art).fileExists, nil, 'wpDestFile='..art..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij ilustrację karty'))) :node(p._data(p._t(mw.title.new('File:'..premium).fileExists, nil, 'wpDestFile='..premium..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz wersji premium'))) :done() :done() end infobox :tag('title') :tag('default'):wikitext(i_title):done() :done() :tag('group'):attr('name', 'content') :tag('group'):attr('name', 'image') :node(image_panel) :done() :tag('group') :attr('name', 'data') :tag('panel') :tag('section') :tag('label'):wikitext('Informacje'):done() :tag('group') :tag('group'):attr('row-items', '3') :node(p._data(faction_img, 'Frakcja')) :node(p._data(p._imgNumbers(card.sila), 'Siła')) :node(p._data(p._imgNumbers(card.werbunek), 'Werbunek')) :done() :node(p._data(''..card.kolor..'', 'Kolor')) :node(p._data(''..card.rzadkosc..'', 'Rzadkość')) :node(p._data(''..card.rodzaj..'', 'Rodzaj')) :node(p._data(''..card.zestaw..'', 'Zestaw Kart')) :node(p._data(p._concat(card.kategorie, '$1'), 'Kategorie')) :node(p._data(p._concat(card.powiazane, ' ', ', '), 'Powiązane')) :node(p._data(card.artysta and p._concat(u.split(card.artysta, ','), '$1') or 'Nieznany', 'Artysta')) :done() :done() :done() :done() :done() :tag('group'):attr('name', 'footer') :tag('panel') :tag('section') :tag('label'):wikitext('Umiejętność'):done() :node(p._data(card.umiejetnosc)) :done() :tag('section') :tag('label'):wikitext('Cytat'):done() :node(p._data('\'\''..card.cytat..'\'\'', nil)) :done() :done() :done() local markup = tostring(infobox) if mw.title.getCurrentTitle().isContentPage then markup = markup..p._categorize(card) markup = markup..'en:'..card.interlang..'' if i_title ~= p_title and title mw.title.getCurrentTitle().text then markup = markup..' ' end end return mw.getCurrentFrame():preprocess(markup) end function p._data(content, label, name) local d = mw.html.create('data') if name then d:attr('name', name) end if label then d:tag('label'):wikitext(label) end if content then d:tag('default'):wikitext(content) end return d end function p.tooltip(frame) return p._tooltip(getArgs(frame)) end function p._tooltip(args) if args1 and data[args1] then local card = data[args1] local wrapper = mw.html.create('div') wrapper :addClass('card-tooltip-box') :tag('div') :addClass('card-tooltip-box-image') :wikitext(' ') :done() :tag('div') :addClass('card-tooltip-box-name') :addClass('border-'..card.kolor) :wikitext('['..card.frakcja[1..'.png|20px|link=]] '..u.trim(string.match(args1, '^^(+'))) :done() :tag('div') :addClass('card-tooltip-box-ability') :addClass('border-'..card.kolor) :wikitext(card.umiejetnosc) :done() :done() return wrapper else return nil end end function p.keyword(frame) return p._keyword(getArgs(frame)) end function p._keyword(args) if keywords[args1] then return tostring(keywords[args1]:gsub('^(^:+:)', '\'\'\'%1\'\'\'')) else return '' end end function p.encode(frame) return tostring(p._encode(getArgs(frame)1)) end function p._encode(file) return file:gsub(':', ''):gsub(' ', '_') end function p._concat(t, f, s) local out = '' for i, v in ipairs(t) do if f then out = out .. f:gsub('$1', v) else out = out .. v end if t+ 1 then out = out .. (s or ', ') end end return out end function p._imgNumbers(number) local out = '' for i = 1, string.len(number) do out = out..' ' end return out end function p._categorize(card) local out = 'Kategoria:Karty' out = out..'Kategoria:'..card.kolor..'' out = out..'Kategoria:'..card.rzadkosc..'' out = out..'Kategoria:'..card.rodzaj..'' out = out..'Kategoria:'..card.zestaw..'' for _, v in ipairs(card.frakcja) do out = out..'Kategoria:'..v..'' end for _, v in ipairs(card.kategorie) do out = out..'Kategoria:'..v..'' end for _, v in ipairs(u.split(card.artysta or '', ',')) do out = out..'Kategoria:'..v..'' end return out end function p._t(s, t, f) if s then return t else return f end end return p